const script = document.createElement('script');
script.type = 'text/javascript';
script.src = chrome.runtime.getURL("inject.js");
(document.head || document.documentElement).appendChild(script);

// Reset variables at every page load in background.js
if (window === window.parent) {
    chrome.runtime.sendMessage({ type: "RESET" }, null);
}

// Send PSSH into background.js
document.addEventListener('pssh', (e) => {
    chrome.runtime.sendMessage({
        type: "PSSH",
        text: e.detail
    }, null);
});

// Send Clearkey into background.js
document.addEventListener('clearkey', (e) => {
    chrome.runtime.sendMessage({
        type: "CLEARKEY",
        text: e.detail
    }, null);
});

let lastLoggedTitle = null;

// Listen for messages from the extension
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.type === "FETCH") {
        fetch(request.u, {
            method: request.m,
            headers: JSON.parse(request.h),
            body: Uint8Array.from(atob(request.b), c => c.charCodeAt(0))
        })
        .then((r) => r.arrayBuffer())
        .then((r) => {
            sendResponse(btoa(String.fromCharCode(...new Uint8Array(r))));
        })
        .catch((error) => {
            console.error("Erreur lors de la récupération :", error);
            sendResponse({ error: "Échec de la récupération" });
        });
        return true; // Indicates that the response will be sent asynchronously
    }
    if (request.action === "getVideoTitle") {
    const titleElement = document.querySelector('h1.title'); // Ajustez le sélecteur si nécessaire
    let title = titleElement ? titleElement.innerText : document.title; // Utilise le titre de l'élément ou le titre de la page
    const isM6 = title.includes("M6");
    // Suppression de la date si "M6" est détecté
    if (isM6) {
        const datePattern = /\d{2}-\d{2}-\d{4}- M6\+/g; // Motif de la date
        title = title.replace(datePattern, '').trim(); // Supprime la date si elle existe
    } else {
        // Sinon, garder tout jusqu'au dernier tiret
        const lastDashIndex = title.lastIndexOf(' - '); // Trouve le dernier tiret
        if (lastDashIndex !== -1) {
            title = title.substring(0, lastDashIndex).trim(); // Garde tout jusqu'au dernier tiret
        }
    }
    // Nettoyage des caractères interdits et des espaces
    const forbiddenChars = /[<>:"“/\\|?*]/g;
    title = title.replace(forbiddenChars, ' ') // Supprime les caractères interdits
                 .replace(/\s+/g, ' ') // Remplace les doubles espaces par un espace unique
                 .trim(); // Supprime les espaces en début et fin
   // Remplacer tous les caractères accentués par leurs équivalents non accentués
    const accents = {
        'é': 'e', 'è': 'e', 'ê': 'e', 'ë': 'e',
        'à': 'a', 'â': 'a', 'ä': 'a',
        'ç': 'c',
        'î': 'i', 'ï': 'i',
        'ô': 'o', 'ö': 'o',
        'ù': 'u', 'û': 'u', 'ü': 'u'
    };

    title = title.replace(/[éèêëàâäçîïôöùûü]/g, match => accents[match]);
    // Vérification et affichage du titre
    if (title !== lastLoggedTitle) {
        console.log("Titre de la vidéo :", title); // Affiche le titre dans la console
        lastLoggedTitle = title; // Met à jour le dernier titre consigné
    }
    sendResponse({ title: title }); // Répondre avec le titre nettoyé
  }
});

